405ef604hIZH5pGi2uwlrlSvUMrutw docs/Console-HOWTO.txt
3f9e7d53iC47UnlfORp9iC1vai6kWw docs/Makefile
40083bb4LVQzRqA3ABz0__pPhGNwtA docs/VBD-HOWTO.txt
-4021053fmeFrEyPHcT8JFiDpLNgtHQ docs/Xeno-HOWTO.txt
+4021053fmeFrEyPHcT8JFiDpLNgtHQ docs/Xen-HOWTO.txt
3f9e7d60PWZJeVh5xdnk0nLUdxlqEA docs/eps/xenlogo.eps
3f9e7d63lTwQbp2fnx7yY93epWS-eQ docs/figs/dummy
3f9e7d564bWFB-Czjv1qdmE6o0GqNg docs/interface.tex
3e5a4e66aHCbQ_F5QZ8VeyikLmuRZQ xenolinux-2.4.25-sparse/arch/xen/kernel/traps.c
3e5a4e66-9_NczrVMbuQkoSLyXckIw xenolinux-2.4.25-sparse/arch/xen/lib/Makefile
3e5a4e6637ZDk0BvFEC-aFQs599-ng xenolinux-2.4.25-sparse/arch/xen/lib/delay.c
-3f68905cF5i8-NYpIhGjKmh0y8Gu5g xenolinux-2.4.25-sparse/arch/xen/lib/xeno_proc.c
+3f68905cF5i8-NYpIhGjKmh0y8Gu5g xenolinux-2.4.25-sparse/arch/xen/lib/xen_proc.c
3e5a4e66croVgpcJyJuF2ycQw0HuJw xenolinux-2.4.25-sparse/arch/xen/mm/Makefile
3e5a4e66l8Q5Tv-6B3lQIRmaVbFPzg xenolinux-2.4.25-sparse/arch/xen/mm/fault.c
3e5a4e668SE9rixq4ahho9rNhLUUFQ xenolinux-2.4.25-sparse/arch/xen/mm/hypervisor.c
3fa8e3f0kBLeE4To2vpdi3cpJbIkbQ xenolinux-2.4.25-sparse/include/asm-xen/suspend.h
3e5a4e68mTr0zcp9SXDbnd-XLrrfxw xenolinux-2.4.25-sparse/include/asm-xen/system.h
3f1056a9L_kqHcFheV00KbKBzv9j5w xenolinux-2.4.25-sparse/include/asm-xen/vga.h
-3f689063nhrIRsMMZjZxMFk7iEINqQ xenolinux-2.4.25-sparse/include/asm-xen/xeno_proc.h
+3f689063nhrIRsMMZjZxMFk7iEINqQ xenolinux-2.4.25-sparse/include/asm-xen/xen_proc.h
3f056927gMHl7mWB89rb73JahbhQIA xenolinux-2.4.25-sparse/include/linux/blk.h
3e5a4e68WLX3B8owTvktP3HHOtznPQ xenolinux-2.4.25-sparse/include/linux/major.h
401c0590D_kwJDU59X8NyvqSv_Cl2A xenolinux-2.4.25-sparse/include/linux/sched.h
# cd xenolinux-<version>-sparse
# ./mkbuildtree <build dir>
# cd <build dir>
-# ARCH=xeno make oldconfig
-# ARCH=xeno make dep
-# ARCH=xeno make bzImage
+# ARCH=xen make oldconfig
+# ARCH=xen make dep
+# ARCH=xen make bzImage
# (<build dir> should be a vanilla linux tree with matching version)
all:
Apache, BK servers etc. It runs every user-space applications we've
tried. We refer to our version of Linux ported to run on Xen as
"XenoLinux", although really it's just standard Linux ported to a new
-virtual CPU architecture that we call xeno-x86 (abbreviated to just
-"xeno").
+virtual CPU architecture that we call xen-x86.
NetBSD has been ported to Xen by Christian Limpach, and will hopefully
soon become part of the standard release. Work on a FreeBSD port has
The build procedure for xenolinux is slightly complicated as its done
by running the 'mkbuildtree' script over a pristine Linux tree to turn
-it into a xenolinux tree by adding the 'xeno' architecture.
+it into a xenolinux tree by adding the 'xen' architecture.
There's also a recent pre-built source tree on the project downloads
page: http://www.cl.cam.ac.uk/netos/xen/downloads/xeno-1.2.tar.gz
See example Python scripts in tools/examples/ and the associated README.
-Further documentation is in docs/ (e.g., docs/Xeno-HOWTO), and also in
+Further documentation is in docs/ (e.g., docs/Xen-HOWTO), and also in
If there's some kernel feature that hasn't been built into our default
kernel, there's a pretty good change that if its a non-hardware
related option you'll just be able to enable it and rebuild. If its
-not on the xconfig menu, hack the arch/xeno/config.in to put the menu
+not on the xconfig menu, hack the arch/xen/config.in to put the menu
back in.
If you're going to use the link local 169.254.1.x addresses to
install: $(DOCUMENTS)
mkdir -p $(prefix)/usr/share/doc/xen
- cp -a $(DOCUMENTS) VBD-HOWTO.txt Xeno-1.2-HOWTO.txt $(prefix)/usr/share/doc/xen
+ cp -a $(DOCUMENTS) VBD-HOWTO.txt Xen-HOWTO.txt $(prefix)/usr/share/doc/xen
%.pdf: %.ps
ps2pdf $< $@
--- /dev/null
+###########################################
+Xen HOWTO
+
+University of Cambridge Computer Laboratory
+
+http://www.cl.cam.ac.uk/netos/xen
+#############################
+
+
+Get Xen Source Code
+=============================
+
+The public master BK repository for the 1.2 release lives at:
+'bk://xen.bkbits.net/xeno-1.2.bk'
+
+To fetch a local copy, first download the BitKeeper tools at:
+http://www.bitmover.com/download with username 'bitkeeper' and
+password 'get bitkeeper'.
+
+Then install the tools and then run:
+# bk clone bk://xen.bkbits.net/xeno-1.2.bk
+
+Under your current directory, a new directory named 'xeno-1.2.bk' has
+been created, which contains all the necessary source codes for the
+Xen hypervisor and Linux guest OSes.
+
+To get newest changes to the repository, run
+# cd xeno-1.2.bk
+# bk pull
+
+
+Build Xen
+=============================
+
+Hint: To see how to build Xen and all the control tools, inspect the
+tools/misc/xen-clone script in the BK repository. This script can be
+used to clone the repository and perform a full build.
+
+To build Xen manually:
+
+# cd xeno-1.2.bk/xen
+# make clean
+# make
+
+This will (should) produce a file called 'xen' in the current
+directory. This is the ELF 32-bit LSB executable file of Xen. You
+can also find a gzip version, named 'xen.gz'.
+
+To install the built files on your server under /usr, type 'make
+install' at the root of the BK repository. You will need to be root to
+do this!
+
+Hint: There is also a 'make dist' rule which copies built files to an
+install directory just outside the BK repo; if this suits your setup,
+go for it.
+
+
+Build Linux as a Xen guest OS
+==============================
+
+This is a little more involved since the repository only contains a
+"sparse" tree -- this is essentially an 'overlay' on a standard linux
+kernel source tree. It contains only those files currently 'in play'
+which are either modified versions of files in the vanilla linux tree,
+or brand new files specific to the Xen port.
+
+So, first you need a vanilla linux-2.4.24 tree, which is located at:
+http://www.kernel.org/pub/linux/kernel/v2.4
+
+Then:
+ # mv linux-2.4.24.tar.gz /xeno-1.2.bk
+ # cd /xeno-1.2.bk
+ # tar -zxvf linux-2.4.24.tar.gz
+
+You'll find a new directory 'linux-2.4.24' which contains all
+the vanilla Linux 2.4.24 kernel source codes.
+
+Hint: You should choose the vanilla linux kernel tree that has the
+same version as the "sparse" tree.
+
+Next, you need to 'overlay' this sparse tree on the full vanilla Linux
+kernel tree:
+
+ # cd /xeno-1.2.bk/xenolinux-2.4.24-sparse
+ # ./mkbuildtree ../linux-2.4.24
+
+Finally, rename the buildtree since it is now a 'xenolinux' buildtree.
+
+ # cd /xeno-1.2.bk
+ # mv linux-2.4.24 xenolinux-2.4.24
+
+Now that the buildtree is there, you can build the xenolinux kernel.
+The default configuration should work fine for most people (use 'make
+oldconfig') but you can customise using one of the other config tools
+if you want.
+
+ # cd /xeno-1.2.bk/xenolinux-2.4.24
+ # ARCH=xen make oldconfig { or menuconfig, or xconfig, or config }
+ # ARCH=xen make dep
+ # ARCH=xen make bzImage
+
+Assuming the build works, you'll end up with
+/xeno-1.2.bk/xenolinux-2.4.24/arch/xen/boot/xenolinux.gz. This is the
+gzip version of XenoLinux kernel image.
+
+
+Build the Domain Control Tools
+==============================
+
+Under '/xeno-1.2.bk/tools', there are three sub-directories:
+'balloon', 'xc' and 'misc', each containing
+a group of tools. You can enter any of the four sub-directories
+and type 'make' to compile the corresponding group of tools.
+Or you can type 'make' under '/xeno-1.2.bk/tools' to compile
+all the tools.
+
+In order to compile the control-interface library in 'xc' you must
+have zlib and development headers installed. Also you will need at
+least Python v2.2.
+
+'make install' in the tools directory will place executables and
+libraries in /usr/bin and /usr/lib. You will need to be root to do this!
+
+As noted earlier, 'make dist' installs files to a local 'install'
+directory just outside the BK repository. These files will then need
+to be installed manually onto the server.
+
+The Example Scripts
+===================
+
+The scripts in tools/examples/ are generally useful for
+administering a Xen-based system. You can install them by running
+'make install' in that directory.
+
+The python scripts (*.py) are the main tools for controlling
+Xen domains.
+
+'defaults' and 'democd' are example configuration files for starting
+new domains.
+
+'xendomains' is a Sys-V style init script for starting and stopping
+Xen domains when the system boots / shuts down.
+
+These will be discussed below in more detail.
+
+
+Installation
+==============================
+
+First:
+# cp /xen-1.2.bk/xen/xen.gz /boot/xen.gz
+# cp /xen-1.2.bk/xenolinux-2.4.24/arch/xen/boot/xenolinux.gz /boot/xenolinux.gz
+
+Second, you must have 'GNU Grub' installed. Then you need to edit
+the Grub configuration file '/boot/grub/menu.lst'.
+
+A typical Grub menu option might look like:
+
+title Xen 1.2 / XenoLinux 2.4.24
+ kernel /boot/xen.gz dom0_mem=131072 com1=115200,8n1 noht
+ module /boot/xenolinux.gz root=/dev/sda4 ro console=tty0
+
+The first line specifies which Xen image to use, and what command line
+arguments to pass to Xen. In this case we set the maximum amount of
+memory to allocate to domain0, and enable serial I/O at 115200 baud.
+We could also disable smp support (nosmp) or disable hyper-threading
+support (noht). If you have multiple network interface you can use
+ifname=ethXX to select which one to use. If your network card is
+unsupported, use ifname=dummy
+
+The second line specifies which XenoLinux image to use, and the
+standard linux command line arguments to pass to the kernel. In this
+case, we're configuring the root partition and stating that it should
+(initially) be mounted read-only (normal practice).
+
+The following is a list of command line arguments to pass to Xen:
+
+ ignorebiostables Disable parsing of BIOS-supplied tables. This may
+ help with some chipsets that aren't fully supported
+ by Xen. If you specify this option then ACPI tables are
+ also ignored, and SMP support is disabled.
+
+ noreboot Don't reboot the machine automatically on errors.
+ This is useful to catch debug output if you aren't
+ catching console messages via the serial line.
+
+ nosmp Disable SMP support.
+ This option is implied by 'ignorebiostables'.
+
+ noacpi Disable ACPI tables, which confuse Xen on some chipsets.
+ This option is implied by 'ignorebiostables'.
+
+ watchdog Enable NMI watchdog which can report certain failures.
+
+ noht Disable Hyperthreading.
+
+ ifname=ethXX Select which Ethernet interface to use.
+
+ ifname=dummy Don't use any network interface.
+
+ com1=<baud>,DPS[,<io_base>,<irq>]
+ com2=<baud>,DPS[,<io_base>,<irq>]
+ Xen supports up to two 16550-compatible serial ports.
+ For example: 'com1=9600,8n1,0x408,5' maps COM1 to a
+ 9600-baud port, 8 data bits, no parity, 1 stop bit,
+ I/O port base 0x408, IRQ 5.
+ If the I/O base and IRQ are standard (com1:0x3f8,4;
+ com2:0x2f8,3) then they need not be specified.
+
+ console=<specifier list>
+ Specify the destination for Xen console I/O.
+ This is a comma-separated list of, for example:
+ vga: use VGA console and allow keyboard input
+ com1: use serial port com1
+ com2H: use serial port com2. Transmitted chars will
+ have the MSB set. Received chars must have
+ MSB set.
+ com2L: use serial port com2. Transmitted chars will
+ have the MSB cleared. Received chars must
+ have MSB cleared.
+ The latter two examples allow a single port to be
+ shared by two subsystems (eg. console and
+ debugger). Sharing is controlled by MSB of each
+ transmitted/received character.
+ [NB. Default for this option is 'com1,tty']
+
+ dom0_mem=xxx Set the maximum amount of memory for domain0.
+
+ tbuf_size=xxx Set the size of the per-cpu trace buffers, in pages
+ (default 1). Note that the trace buffers are only
+ enabled in debug builds. Most users can ignore
+ this feature completely.
+
+Boot into Domain 0
+==============================
+
+Reboot your computer; After selecting the kernel to boot, stand back
+and watch Xen boot, closely followed by "domain 0" running the
+XenoLinux kernel. Depending on which root partition you have assigned
+to XenoLinux kernel in Grub configuration file, you can use the
+corresponding username / password to log in.
+
+Once logged in, it should look just like any regular linux box. All
+the usual tools and commands should work as per usual.
+
+
+Start New Domains
+==============================
+
+You must be 'root' to start new domains.
+
+Make sure you have successfully configured at least one
+physical network interface. Then:
+
+# xen_nat_enable
+
+The xc_dom_create.py program is useful for starting Xen domains.
+You can specify configuration files using the -f switch on the command
+line. The default configuration is in /etc/xc/defaults. You can
+create custom versions of this to suit your local configuration.
+
+You can override the settings in a configuration file using command
+line arguments to xc_dom_create.py. However, you may find it simplest
+to create a separate configuration file for each domain you start.
+
+xc_dom_create.py will print the local TCP port to which you should
+connect to perform console I/O. A suitable console client is provided
+by the Python module xenctl.console_client: running this module from
+the command line with <host> and <port> parameters will start a
+terminal session. This module is also installed as /usr/bin/xencons,
+from a copy in tools/misc/xencons. An alternative to manually running
+a terminal client is to specify '-c' to xc_dom_create.py, or add
+'auto_console=True' to the defaults file. This will cause
+xc_dom_create.py to automatically become teh console terminal after
+starting the domain.
+
+Boot-time output can be directed to this 'virtual console' by
+specifying 'console=xencons0' as a boot parameter. It is also possible
+to log in via the virtual console. To do this, you must run a mingetty
+on the virtual console, which you can achieve as follows:
+ # mkdir -p /dev/xen
+ # mknod /dev/xen/cons c 4 123
+ # echo "c:2345:respawn:/sbin/mingetty --noclear xen/cons" >>/etc/inittab
+If you wish to permit root logins via the virtual console then you must
+also add 'xen/cons' to the list of trusted ttys in /etc/securetty.
+
+
+Manage Running Domains
+==============================
+
+You can see a list of existing domains with:
+# xc_dom_control.py list
+
+In order to stop a domain, you use:
+# xc_dom_control.py stop <domain_id>
+
+To shutdown a domain cleanly use:
+# xc_dom_control.py shutdown <domain_id>
+
+To destroy a domain immediately:
+# xc_dom_control.py destroy <domain_id>
+
+There are other more advanced options, including pinning domains to
+specific CPUs and saving / resuming domains to / from disk files. To
+get more information, run the tool without any arguments:
+# xc_dom_control.py
+
+There is more information available in the Xen README files, the
+VBD-HOWTO and the contributed FAQ / HOWTO documents on the web.
+
+
+Other Control Tasks using Python
+================================
+
+A Python module 'Xc' is installed as part of the tools-install
+process. This can be imported, and an 'xc object' instantiated, to
+provide access to privileged command operations:
+
+# import Xc
+# xc = Xc.new()
+# dir(xc)
+# help(xc.domain_create)
+
+In this way you can see that the class 'xc' contains useful
+documentation for you to consult.
+
+A further package of useful routines (xenctl) is also installed:
+
+# import xenctl.utils
+# help(xenctl.utils)
+
+You can use these modules to write your own custom scripts or you can
+customise the scripts supplied in the Xen distribution.
+
+
+Automatically start / stop domains at boot / shutdown
+=====================================================
+
+A Sys-V style init script for RedHat systems is provided in
+tools/examples/xendomains. When you run 'make install' in that
+directory, it should be automatically copied to /etc/init.d/. You can
+then enable it using the chkconfig command, e.g.:
+
+# chkconfig --add xendomains
+
+By default, this will start the boot-time domains in runlevels 3, 4
+and 5. To specify a domain is to start at boot-time, place its
+configuration file (or a link to it) under /etc/xc/auto/.
+
+The script will also stop ALL domains when the system is shut down,
+even domains that it did not start originally.
+
+You can also use the "service" command (part of the RedHat standard
+distribution) to run this script manually, e.g:
+
+# service xendomains start
+
+Starts all the domains with config files under /etc/xc/auto/.
+
+# service xendomains stop
+
+Shuts down ALL running Xen domains.
+++ /dev/null
-###########################################
-Xeno HOWTO
-
-University of Cambridge Computer Laboratory
-
-http://www.cl.cam.ac.uk/netos/xen
-#############################
-
-
-Get Xeno Source Codes
-==========================
-
-The public master BK repository for the 1.2 release lives at:
-'bk://xen.bkbits.net/xeno-1.2.bk'
-
-To fetch a local copy, first download the BitKeeper tools at:
-http://www.bitmover.com/download with username 'bitkeeper' and
-password 'get bitkeeper'.
-
-Then install the tools and then run:
-# bk clone bk://xen.bkbits.net/xeno-1.2.bk
-
-Under your current directory, a new directory named 'xeno-1.2.bk' has
-been created, which contains all the source codes for Xen and
-XenoLinux.
-
-To get newest changes to the repository, run
-# cd xeno-1.2.bk
-# bk pull
-
-
-Build Xen
-=============================
-
-Hint: To see how to build Xen and all the control tools, inspect the
-tools/misc/xen-clone script in the BK repository. This script can be
-used to clone the repository and perform a full build.
-
-To build Xen manually:
-
-# cd xeno-1.2.bk/xen
-# make clean
-# make
-
-This will (should) produce a file called 'xen' in the current
-directory. This is the ELF 32-bit LSB executable file of Xen. You
-can also find a gzip version, named 'xen.gz'.
-
-To install the built files on your Xenoserver under /usr, type 'make
-install' at the root of the BK repository. You will need to be root to
-do this!
-
-Hint: There is also a 'make dist' rule which copies built files to an
-install directory just outside the BK repo; if this suits your setup,
-go for it.
-
-
-Build XenoLinux
-==============================
-
-This is a little more involved since the repository only contains a
-"sparse" tree -- this is essentially an 'overlay' on a standard linux
-kernel source tree. It contains only those files currently 'in play'
-which are either modified versions of files in the vanilla linux tree,
-or brand new files specific to XenoLinux.
-
-So, first you need a vanilla linux-2.4.24 tree, which is located at:
-http://www.kernel.org/pub/linux/kernel/v2.4
-
-Then:
- # mv linux-2.4.24.tar.gz /xeno-1.2.bk
- # cd /xeno-1.2.bk
- # tar -zxvf linux-2.4.24.tar.gz
-
-You'll find a new directory 'linux-2.4.24' which contains all
-the vanilla Linux 2.4.24 kernel source codes.
-
-Hint: You should choose the vanilla linux kernel tree that has the
-same version as the "sparse" tree.
-
-Next, you need to 'overlay' this sparse tree on the full vanilla Linux
-kernel tree:
-
- # cd /xeno-1.2.bk/xenolinux-2.4.24-sparse
- # ./mkbuildtree ../linux-2.4.24
-
-Finally, rename the buildtree since it is now a xenolinux buildtree.
-
- # cd /xeno-1.2.bk
- # mv linux-2.4.24 xenolinux-2.4.24
-
-Now that the buildtree is there, you can build the xenolinux kernel.
-The default configuration should work fine for most people (use 'make
-oldconfig') but you can customise using one of the other config tools
-if you want.
-
- # cd /xeno-1.2.bk/xenolinux-2.4.24
- # ARCH=xeno make oldconfig { or menuconfig, or xconfig, or config }
- # ARCH=xeno make dep
- # ARCH=xeno make bzImage
-
-Assuming the build works, you'll end up with
-/xeno-1.2.bk/xenolinux-2.4.24/arch/xeno/boot/xenolinux.gz. This is the
-gzip version of XenoLinux kernel image.
-
-
-Build the Domain Control Tools
-==============================
-
-Under '/xeno-1.2.bk/tools', there are three sub-directories:
-'balloon', 'xc' and 'misc', each containing
-a group of tools. You can enter any of the four sub-directories
-and type 'make' to compile the corresponding group of tools.
-Or you can type 'make' under '/xeno-1.2.bk/tools' to compile
-all the tools.
-
-In order to compile the control-interface library in 'xc' you must
-have zlib and development headers installed. Also you will need at
-least Python v2.2.
-
-'make install' in the tools directory will place executables and
-libraries in /usr/bin and /usr/lib. You will need to be root to do this!
-
-As noted earlier, 'make dist' installs files to a local 'install'
-directory just outside the BK repository. These files will then need
-to be installed manually onto the Xenoserver.
-
-The Example Scripts
-===================
-
-The scripts in tools/examples/ are generally useful for
-administering a Xen-based system. You can install them by running
-'make install' in that directory.
-
-The python scripts (*.py) are the main tools for controlling
-Xen domains.
-
-'defaults' and 'democd' are example configuration files for starting
-new domains.
-
-'xendomains' is a Sys-V style init script for starting and stopping
-Xen domains when the system boots / shuts down.
-
-These will be discussed below in more detail.
-
-
-Installation
-==============================
-
-First:
-# cp /xen-1.2.bk/xen/xen.gz /boot/xen.gz
-# cp /xen-1.2.bk/xenolinux-2.4.24/arch/xeno/boot/xenolinux.gz /boot/xenolinux.gz
-
-Second, you must have 'GNU Grub' installed. Then you need to edit
-the Grub configuration file '/boot/grub/menu.lst'.
-
-A typical Grub menu option might look like:
-
-title Xen 1.2 / XenoLinux 2.4.24
- kernel /boot/xen.gz dom0_mem=131072 com1=115200,8n1 noht
- module /boot/xenolinux.gz root=/dev/sda4 ro console=tty0
-
-The first line specifies which Xen image to use, and what command line
-arguments to pass to Xen. In this case we set the maximum amount of
-memory to allocate to domain0, and enable serial I/O at 115200 baud.
-We could also disable smp support (nosmp) or disable hyper-threading
-support (noht). If you have multiple network interface you can use
-ifname=ethXX to select which one to use. If your network card is
-unsupported, use ifname=dummy
-
-The second line specifies which XenoLinux image to use, and the
-standard linux command line arguments to pass to the kernel. In this
-case, we're configuring the root partition and stating that it should
-(initially) be mounted read-only (normal practice).
-
-The following is a list of command line arguments to pass to Xen:
-
- ignorebiostables Disable parsing of BIOS-supplied tables. This may
- help with some chipsets that aren't fully supported
- by Xen. If you specify this option then ACPI tables are
- also ignored, and SMP support is disabled.
-
- noreboot Don't reboot the machine automatically on errors.
- This is useful to catch debug output if you aren't
- catching console messages via the serial line.
-
- nosmp Disable SMP support.
- This option is implied by 'ignorebiostables'.
-
- noacpi Disable ACPI tables, which confuse Xen on some chipsets.
- This option is implied by 'ignorebiostables'.
-
- watchdog Enable NMI watchdog which can report certain failures.
-
- noht Disable Hyperthreading.
-
- ifname=ethXX Select which Ethernet interface to use.
-
- ifname=dummy Don't use any network interface.
-
- com1=<baud>,DPS[,<io_base>,<irq>]
- com2=<baud>,DPS[,<io_base>,<irq>]
- Xen supports up to two 16550-compatible serial ports.
- For example: 'com1=9600,8n1,0x408,5' maps COM1 to a
- 9600-baud port, 8 data bits, no parity, 1 stop bit,
- I/O port base 0x408, IRQ 5.
- If the I/O base and IRQ are standard (com1:0x3f8,4;
- com2:0x2f8,3) then they need not be specified.
-
- console=<specifier list>
- Specify the destination for Xen console I/O.
- This is a comma-separated list of, for example:
- vga: use VGA console and allow keyboard input
- com1: use serial port com1
- com2H: use serial port com2. Transmitted chars will
- have the MSB set. Received chars must have
- MSB set.
- com2L: use serial port com2. Transmitted chars will
- have the MSB cleared. Received chars must
- have MSB cleared.
- The latter two examples allow a single port to be
- shared by two subsystems (eg. console and
- debugger). Sharing is controlled by MSB of each
- transmitted/received character.
- [NB. Default for this option is 'com1,tty']
-
- dom0_mem=xxx Set the maximum amount of memory for domain0.
-
- tbuf_size=xxx Set the size of the per-cpu trace buffers, in pages
- (default 1). Note that the trace buffers are only
- enabled in debug builds. Most users can ignore
- this feature completely.
-
-Boot into Domain 0
-==============================
-
-Reboot your computer; After selecting the kernel to boot, stand back
-and watch Xen boot, closely followed by "domain 0" running the
-XenoLinux kernel. Depending on which root partition you have assigned
-to XenoLinux kernel in Grub configuration file, you can use the
-corresponding username / password to log in.
-
-Once logged in, it should look just like any regular linux box. All
-the usual tools and commands should work as per usual.
-
-
-Start New Domains
-==============================
-
-You must be 'root' to start new domains.
-
-Make sure you have successfully configured at least one
-physical network interface. Then:
-
-# xen_nat_enable
-
-The xc_dom_create.py program is useful for starting Xen domains.
-You can specify configuration files using the -f switch on the command
-line. The default configuration is in /etc/xc/defaults. You can
-create custom versions of this to suit your local configuration.
-
-You can override the settings in a configuration file using command
-line arguments to xc_dom_create.py. However, you may find it simplest
-to create a separate configuration file for each domain you start.
-
-xc_dom_create.py will print the local TCP port to which you should
-connect to perform console I/O. A suitable console client is provided
-by the Python module xenctl.console_client: running this module from
-the command line with <host> and <port> parameters will start a
-terminal session. This module is also installed as /usr/bin/xencons,
-from a copy in tools/misc/xencons. An alternative to manually running
-a terminal client is to specify '-c' to xc_dom_create.py, or add
-'auto_console=True' to the defaults file. This will cause
-xc_dom_create.py to automatically become teh console terminal after
-starting the domain.
-
-Boot-time output can be directed to this 'virtual console' by
-specifying 'console=xencons0' as a boot parameter. It is also possible
-to log in via the virtual console. To do this, you must run a mingetty
-on the virtual console, which you can achieve as follows:
- # mkdir -p /dev/xen
- # mknod /dev/xen/cons c 4 123
- # echo "c:2345:respawn:/sbin/mingetty --noclear xen/cons" >>/etc/inittab
-If you wish to permit root logins via the virtual console then you must
-also add 'xen/cons' to the list of trusted ttys in /etc/securetty.
-
-
-Manage Running Domains
-==============================
-
-You can see a list of existing domains with:
-# xc_dom_control.py list
-
-In order to stop a domain, you use:
-# xc_dom_control.py stop <domain_id>
-
-To shutdown a domain cleanly use:
-# xc_dom_control.py shutdown <domain_id>
-
-To destroy a domain immediately:
-# xc_dom_control.py destroy <domain_id>
-
-There are other more advanced options, including pinning domains to
-specific CPUs and saving / resuming domains to / from disk files. To
-get more information, run the tool without any arguments:
-# xc_dom_control.py
-
-There is more information available in the Xen README files, the
-VBD-HOWTO and the contributed FAQ / HOWTO documents on the web.
-
-
-Other Control Tasks using Python
-================================
-
-A Python module 'Xc' is installed as part of the tools-install
-process. This can be imported, and an 'xc object' instantiated, to
-provide access to privileged command operations:
-
-# import Xc
-# xc = Xc.new()
-# dir(xc)
-# help(xc.domain_create)
-
-In this way you can see that the class 'xc' contains useful
-documentation for you to consult.
-
-A further package of useful routines (xenctl) is also installed:
-
-# import xenctl.utils
-# help(xenctl.utils)
-
-You can use these modules to write your own custom scripts or you can
-customise the scripts supplied in the Xen distribution.
-
-
-Automatically start / stop domains at boot / shutdown
-=====================================================
-
-A Sys-V style init script for RedHat systems is provided in
-tools/examples/xendomains. When you run 'make install' in that
-directory, it should be automatically copied to /etc/init.d/. You can
-then enable it using the chkconfig command, e.g.:
-
-# chkconfig --add xendomains
-
-By default, this will start the boot-time domains in runlevels 3, 4
-and 5. To specify a domain is to start at boot-time, place its
-configuration file (or a link to it) under /etc/xc/auto/.
-
-The script will also stop ALL domains when the system is shut down,
-even domains that it did not start originally.
-
-You can also use the "service" command (part of the RedHat standard
-distribution) to run this script manually, e.g:
-
-# service xendomains start
-
-Starts all the domains with config files under /etc/xc/auto/.
-
-# service xendomains stop
-
-Shuts down ALL running Xen domains.
\subsection{Internal API}
To use the trace buffer functionality from within Xen, you must {\tt \#include
-<xeno/trace.h>}, which contains definitions related to the trace buffer. Trace
+<xen/trace.h>}, which contains definitions related to the trace buffer. Trace
events are inserted into the buffer using the {\tt TRACE\_xD} ({\tt x} = 0, 1,
2, 3, 4 or 5) macros. These all take an event number, plus {\tt x} additional
(32-bit) data as their arguments. For trace buffer-enabled builds of Xen these
By default, the trace buffer is enabled only in debug builds (i.e. {\tt NDEBUG}
is not defined). It can be enabled separately by defining {\tt TRACE\_BUFFER},
-either in {\tt <xeno/config.h>} or on the gcc command line.
+either in {\tt <xen/config.h>} or on the gcc command line.
\subsection{Dumping trace data}
Symbolic debugging infomration is quite helpful too:
xeno.bk/xen/arch/i386/Rules.mk
add -g to CFLAGS to compile Xen with symbols
- xeno.bk/xenolinux-2.4.24-sparse/arch/xeno/Makefile
- add -g to CFLAGS to compile XenoLinux with symbols
+ xeno.bk/xenolinux-2.4.24-sparse/arch/xen/Makefile
+ add -g to CFLAGS to compile Linux with symbols
You may also want to consider dedicating a register to the
frame pointer (disable the -fomit-frame-pointer compile flag).
Usage
-----
-1. Boot Xen and XenoLinux
+1. Boot Xen and Linux
2. Interrupt Xen by pressing 'D' at the console
You should see the console message:
pdb_handle_exception [0x88][0xfc5c9d88]
*
* Date: May 2003
*
- * Environment: Xeno Minimal OS
+ * Environment: Xen Minimal OS
* Description: a random collection of type definitions
*
****************************************************************************
__sti();
/* print out some useful information */
- printk("Xeno Minimal OS!\n");
+ printk("Xen Minimal OS!\n");
printk("start_info: %p\n", si);
printk(" nr_pages: %lu", si->nr_pages);
printk(" shared_inf: %08lx\n", si->shared_info);
mv linux-${LINUX_VER} xenolinux-${LINUX_VER}
cd xenolinux-${LINUX_VER}
-ARCH=xeno make oldconfig
-ARCH=xeno make dep
-ARCH=xeno make bzImage
-ARCH=xeno make dist || ARCH=xeno make install
-ARCH=xeno make modules
-ARCH=xeno make INSTALL_MOD_PATH=${TOP}/install modules_install
+ARCH=xen make oldconfig
+ARCH=xen make dep
+ARCH=xen make bzImage
+ARCH=xen make dist || ARCH=xen make install
+ARCH=xen make modules
+ARCH=xen make INSTALL_MOD_PATH=${TOP}/install modules_install
cd ..
/******************************************************************************
* xc_linux_restore.c
*
- * Restore the state of a Xenolinux session.
+ * Restore the state of a Linux session.
*
* Copyright (c) 2003, K A Fraser.
*/
#include "xc_private.h"
-#include <asm-xeno/suspend.h>
+#include <asm-xen/suspend.h>
#include <zlib.h>
/* This may allow us to create a 'quiet' command-line option, if necessary. */
/******************************************************************************
* xc_linux_save.c
*
- * Save the state of a running Xenolinux session.
+ * Save the state of a running Linux session.
*
* Copyright (c) 2003, K A Fraser.
*/
#include "xc_private.h"
-#include <asm-xeno/suspend.h>
+#include <asm-xen/suspend.h>
#include <zlib.h>
/* This may allow us to create a 'quiet' command-line option, if necessary. */
#include "xc.h"
-#include <asm-xeno/proc_cmd.h>
+#include <asm-xen/proc_cmd.h>
/* from xen/include/hypervisor-ifs */
#include <hypervisor-if.h>
# This will be overriden for Xen and UML builds.
SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)
ARCH ?= $(SUBARCH)
-ARCH := $(ARCH:xeno=xen) ## Temporary hack while users adjust to new archname
+
+## XXX The following hack can be discarded after users have adjusted to the
+## architectural name change 'xeno' -> 'xen'.
+ifeq ($(ARCH),xeno)
+ ARCH := xen
+endif
KERNELPATH=kernel-$(shell echo $(KERNELRELEASE) | sed -e "s/-//g")
}
}
-static void xen_console_write(struct console *co, const char *s,
- unsigned int count)
+static void kcons_write(struct console *co, const char *s,
+ unsigned int count)
{
unsigned long flags;
spin_lock_irqsave(&xen_console_lock, flags);
spin_unlock_irqrestore(&xen_console_lock, flags);
}
-static kdev_t xen_console_device(struct console *c)
+static kdev_t kcons_device(struct console *c)
{
/*
* This is the magic that binds our "struct console" to our
return MKDEV(TTY_MAJOR, XEN_TTY_MINOR);
}
-static struct console xen_console_info = {
- name: "xencons", /* Used to be xen_console, but we're only
- actually allowed 8 charcters including
- the terminator... */
- write: xen_console_write,
- device: xen_console_device,
- flags: CON_PRINTBUFFER,
- index: -1,
+static struct console kcons_info = {
+ name: "xencons",
+ write: kcons_write,
+ device: kcons_device,
+ flags: CON_PRINTBUFFER,
+ index: -1,
};
void xen_console_init(void)
{
- register_console(&xen_console_info);
+ register_console(&kcons_info);
}
va_end(args);
/* Send the processed output directly to Xen. */
- xen_console_write(NULL, printk_buf, printk_len);
+ kcons_write(NULL, printk_buf, printk_len);
return 0;
}
--- /dev/null
+
+#include <linux/config.h>
+#include <linux/proc_fs.h>
+
+static struct proc_dir_entry *xen_base;
+
+struct proc_dir_entry *create_xen_proc_entry(const char *name, mode_t mode)
+{
+ if ( xen_base == NULL )
+ if ( (xen_base = proc_mkdir("xen", &proc_root)) == NULL )
+ panic("Couldn't create /proc/xen");
+ return create_proc_entry(name, mode, xen_base);
+}
+
+void remove_xen_proc_entry(const char *name)
+{
+ remove_proc_entry(name, xen_base);
+}
+++ /dev/null
-
-#include <linux/config.h>
-#include <linux/proc_fs.h>
-
-static struct proc_dir_entry *xen_base;
-
-struct proc_dir_entry *create_xen_proc_entry(const char *name, mode_t mode)
-{
- if ( xen_base == NULL )
- if ( (xen_base = proc_mkdir("xen", &proc_root)) == NULL )
- panic("Couldn't create /proc/xen");
- return create_proc_entry(name, mode, xen_base);
-}
-
-void remove_xen_proc_entry(const char *name)
-{
- remove_proc_entry(name, xen_base);
-}
--- /dev/null
+
+#ifndef __ASM_XEN_PROC_H__
+#define __ASM_XEN_PROC_H__
+
+#include <linux/config.h>
+#include <linux/proc_fs.h>
+
+extern struct proc_dir_entry *create_xen_proc_entry(
+ const char *name, mode_t mode);
+extern void remove_xen_proc_entry(
+ const char *name);
+
+#endif /* __ASM_XEN_PROC_H__ */
+++ /dev/null
-
-#ifndef __ASM_XEN_PROC_H__
-#define __ASM_XEN_PROC_H__
-
-#include <linux/config.h>
-#include <linux/proc_fs.h>
-
-extern struct proc_dir_entry *create_xen_proc_entry(
- const char *name, mode_t mode);
-extern void remove_xen_proc_entry(
- const char *name);
-
-#endif /* __ASM_XEN_PROC_H__ */